package ru.agiledev.aos.commons.dto;

/**
 * Extended query Class represent input query after performed analysis. It contains query transformed into
 * inner representation, distinctive OI, main objects of interest and addition for some type of objects.
 *
 * Created by Anton Kirillov
 * Date: 8/12/11
 */

import java.util.List;

/**
 * DTO for extended query with meta-information (frontend class @see ru.agiledev.aos.frontend.shared.TransformationResults)
 */
public class SemanticQuery {
    Integer id;
    /**
     * Input query withou any transformations performed
     */
    String initialQuery;
    /**
     * Query represented as List of LightWord objects
     */
    List<LightWord> transformedQuery;
    /**
     * Distinctive object showing what kind of type and query represented
     */
    LightWord distinctiveObject;
    /**
     * Main objects of interest and additive object(show addition to query)
     */
    List<LightWord> secondObject, thirdObject, additiveObject;

    QType questionType;
    /**
     * Queries produced as a result of semantic extension
     */
    List<String> queries;


    //getters and setters ------------------------------------------------------

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getInitialQuery() {
        return initialQuery;
    }

    public void setInitialQuery(String initialQuery) {
        this.initialQuery = initialQuery;
    }

    public List<LightWord> getTransformedQuery() {
        return transformedQuery;
    }

    public void setTransformedQuery(List<LightWord> transformedQuery) {
        this.transformedQuery = transformedQuery;
    }

    public LightWord getDistinctiveObject() {
        return distinctiveObject;
    }

    public void setDistinctiveObject(LightWord distinctiveObject) {
        this.distinctiveObject = distinctiveObject;
    }

    public List<LightWord> getSecondObject() {
        return secondObject;
    }

    public void setSecondObject(List<LightWord> secondObject) {
        this.secondObject = secondObject;
    }

    public List<LightWord> getThirdObject() {
        return thirdObject;
    }

    public void setThirdObject(List<LightWord> thirdObject) {
        this.thirdObject = thirdObject;
    }

    public QType getQuestionType() {
        return questionType;
    }

    public void setQuestionType(QType questionType) {
        this.questionType = questionType;
    }

    public List<String> getQueries() {
        return queries;
    }

    public void setQueries(List<String> queries) {
        this.queries = queries;
    }

    public List<LightWord> getAdditiveObject() {
        return additiveObject;
    }

    public void setAdditiveObject(List<LightWord> additiveObject) {
        this.additiveObject = additiveObject;
    }
}
